/*
 * Copyright (c) 2025 CAX Conversion Project
 */
package com.comac.ins.isfd.service;


import com.comac.ins.common.mybatis.core.page.TableDataInfo;
import com.comac.ins.isfd.domain.bo.IsfdModelManagementTaskBo;
import com.comac.ins.isfd.domain.bo.IsfdModelManagementTaskCreateIndexFileParamBo;
import com.comac.ins.isfd.domain.bo.IsfdModelManagementTaskCreateIndexFileResultBo;
import com.comac.ins.isfd.domain.bo.query.IsfdModelManagementTaskQueryBo;
import com.comac.ins.isfd.domain.vo.*;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;

import java.util.Collection;
import java.util.List;

/**
 * 模型组建任务Service接口
 *
 * @author Lion Li
 * @date 2024-08-19
 */
public interface IIsfdModelManagementTaskService {

    IsfdModelManagementTaskVo queryById(Long id);

    /**
     * 获取模型组建任务详细信息，包含：任务、零件列表 和 计算文件操作记录
     */
    IsfdModelManagementTaskDetailVo queryDetailVoById(Long id);

    /**
     * 模型组建任务分页列表
     */
    TableDataInfo<IsfdModelManagementTaskVo> queryPageList(IsfdModelManagementTaskQueryBo bo);

    /**
     * 模型组装左侧树查询
     */
    List<IsfdModelManagementStructureDefinitionTreeNodeVo> listTree(String modelNumber, String batchNumber);

    /**
     * 根据任务id查询关联的零件列表
     */
    List<IsfdModelManagementPartVo> getPartListByTaskId(Long id);

    /**
     * 查询符合条件的模型组建任务列表
     *
     * @param bo 查询条件
     * @return 模型组建任务列表
     */
    List<IsfdModelManagementTaskVo> queryList(IsfdModelManagementTaskBo bo);


    /**
     * 校验并批量删除模型组建任务信息
     *
     * @param ids 待删除的主键集合
     * @return 是否删除成功
     */
    Boolean deleteWithValidByIds(Collection<Long> ids);


    /**
     * 模型组建任务保存，包括新增（普通新增和复制新增）、修改
     */
    IsfdModelManagementTaskSaveVo save(IsfdModelManagementTaskBo isfdModelManagementTaskBo);


    /**
     * 下载BDF文件
     */
    void bdfDownload(Long id, HttpServletResponse response);

    /**
     * 导出BOM文件
     */
    void bomExport(Long id, HttpServletResponse response);


    /**
     * 生成索引文件
     */
    IsfdModelManagementTaskCreateIndexFileResultBo createIndexFile(IsfdModelManagementTaskCreateIndexFileParamBo paramBo);

    /**
     * 下载全机模型BOM文件
     */
    void allBomDownload(String modelNumber,String batchNumber,HttpServletResponse response);

    /**
     * 导入BOM文件
     */
    IsfdModelManagementTaskImportVo bomImport(MultipartFile file);
}
